package com.itheima.mm.controller;

import com.itheima.mm.dto.CourseDTO;
import com.itheima.mm.entity.CoursePageQueryParams;
import com.itheima.mm.entity.PageResult;
import com.itheima.mm.entity.QueryPageBean;
import com.itheima.mm.entity.Result;
import com.itheima.mm.service.CourseService;
import com.itheima.mm.vo.CourseAllVO;
import com.itheima.mm.vo.CourseVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Description CourseController
 * @Author xiao
 * @Date 2024-06-22
 */

@RestController
@Slf4j
@RequestMapping("/course")
public class CourseController {
    @Autowired
    private CourseService courseService;

    @PostMapping("/add.do")
    public Result add(@RequestBody CourseDTO courseDTO){
        log.info("处理添加学科请求，请求参数：{}",courseDTO);
        courseService.add(courseDTO);

        //返回数据
        return Result.success();

    };


    /**
     * 处理学科分页查询请求
     */

    @PostMapping("/findListByPage.do")
    public Result<PageResult<CourseVO>> findListByPage(
            @RequestBody QueryPageBean<CoursePageQueryParams> queryPageBean){
        log.info("处理学科分页查询请求，请求参数：{}",queryPageBean);


        //调用业务查询分页数据
        //PageResult<CourseVO> pageResult = courseService.findListByPage(queryPageBean);


        //使用PageHelper插件实现分页操作
        PageResult<CourseVO> pageResult = courseService.findListByPage2(queryPageBean);




        //返回数据
        return Result.success(pageResult);


    };



    //更新学科
    @PostMapping("/update.do")
    public Result update(@RequestBody CourseDTO courseDTO){
        log.info("处理学科更新请求，请求参数：{}",courseDTO);
        courseService.update(courseDTO);

        //返回数据
        return Result.success();

    };



      //学科删除
    @GetMapping("/delete.do")
    public Result delete(Integer courseId){
        log.info("处理删除学科请求，请求学科参数{}",courseId);

        courseService.delete(courseId);



        return Result.success(null,"删除成功");



    }


    //获取全部科学（含标签、目录列表）列表请求
    @GetMapping("/findListAll.do")

    public Result<List<CourseAllVO>> findListAll(){
        log.info("开始获取全部科学（标签、目录）列表");
        List<CourseAllVO> courseAllVO = courseService.findListAll();

        return Result.success(courseAllVO);
    }








}
